/**
 *
 * Praktikum CG WP WS13/14 Gruppe: Andreas Rebri(andreas.rebri@haw-hamburg.de)
 * Joschka Schulz(joschka.schulz@haw-hamburg.de) Aufgabe : Aufgabenblatt 3
 * Verwendete Quellen: -
 */
package edu.cg1.exercises.marchingcubes;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import javax.vecmath.Point3d;

/**
 * Die Klasse representiert ein Objekt, dass aus mehreren Dreiecken besteht.
 */
public class TriangleMesh implements ITriangleMesh {

    /**
     * Liste der Dreicecke
     */
    private List<Triangle> triangles;
    /**
     * liste der zugeh�rigen Knotenpunkte
     */
    private List<Point3d> vertices;

    public TriangleMesh() {
        triangles = new ArrayList<>();
        vertices = new ArrayList<>();
    }

    /**
     * F�ht ein Dreieck zum TriangleMesh hinzu.
     */
    @Override
    public void addTriangle(Triangle triangle) {
        triangles.add(triangle);
    }

    /**
     * F�gt ein Vertex zum TriangleMesh hinzu und �berpr�ft ob das vertex schon
     * existiert.
     */
    @Override
    public int addVertex(Point3d vertex) {

        vertices.add(vertex);
        return vertices.size() - 1;
    }

    @Override
    public int getNumberOfTriangles() {
        return triangles.size();
    }

    @Override
    public int getNumberOfVertices() {
        return vertices.size();
    }

    @Override
    public Triangle getTriangle(int index) {
        return triangles.get(index);
    }

    @Override
    public Point3d getVertex(int index) {
        return vertices.get(index);
    }

    /**
     * Versetzt das Objekt in seinen Ursprungszustand ohne Inhalt.
     */
    @Override
    public void clear() {
        triangles.clear();
        vertices.clear();
    }
}
